package com.myproject.utils;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import java.time.LocalDateTime;
import java.util.Date;

public class DateUtils {

    /**
     * 获取当前日期时间字符串(yyyy-MM-dd HH:mm:ss)
     */
    public static String now() {
        return DateUtil.formatDateTime(new Date());
    }

    /**
     * 格式化日期时间
     * @param date 日期对象
     * @return 格式化后的日期时间字符串(yyyy-MM-dd HH:mm:ss)
     */
    public static String formatDateTime(Date date) {
        return DateUtil.formatDateTime(date);
    }

    /**
     * 格式化日期时间
     * @param dateTime LocalDateTime对象
     * @return 格式化后的日期时间字符串(yyyy-MM-dd HH:mm:ss)
     */
    public static String formatDateTime(LocalDateTime dateTime) {
        return LocalDateTimeUtil.format(dateTime, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 解析日期时间字符串
     * @param dateTimeStr 日期时间字符串(yyyy-MM-dd HH:mm:ss)
     * @return Date对象
     */
    public static Date parseDateTime(String dateTimeStr) {
        return DateUtil.parse(dateTimeStr);
    }

    /**
     * 计算两个日期之间的天数差
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 天数差
     */
    public static long betweenDays(Date startDate, Date endDate) {
        return DateUtil.betweenDay(startDate, endDate, false);
    }

    /**
     * 增加天数
     * @param date 日期
     * @param days 增加的天数
     * @return 增加后的日期
     */
    public static Date addDays(Date date, int days) {
        return DateUtil.offsetDay(date, days);
    }

    /**
     * 减少天数
     * @param date 日期
     * @param days 减少的天数
     * @return 减少后的日期
     */
    public static Date minusDays(Date date, int days) {
        return DateUtil.offsetDay(date, -days);
    }
}